package com.woniuxy.util;

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.MACSigner;

import java.util.HashMap;
import java.util.Map;

public class JWTTest {
    /**
     * 生成JWT
     * @param args
     */
    public static void main(String[] args) throws JOSEException {
        //生成JWT，头部+载荷+签名
        //1.生成头部
        JWSHeader header = new JWSHeader
                .Builder(JWSAlgorithm.HS256)//设置加密方式
                .type(JOSEObjectType.JWT).build();//设置JWT常量
        System.out.println(header.toBase64URL());

        //2.生成载荷，用来保存用户登录信息
        Map map = new HashMap();
        map.put("id","1");
        map.put("account", "admin");
        Payload payload = new Payload(map);
        System.out.println(payload.toBase64URL());

        //3:签名 加密 （头部+载荷+密钥）每个系统自己设置
        JWSObject jwsObject = new JWSObject(header, payload);
        String secretKey = "天王盖地虎，宝塔镇河妖";
        MACSigner macSigner = new MACSigner(secretKey);//MACSinger对称加密方式
        jwsObject.sign(macSigner );//数字签名(加密)

        String jwtStr = jwsObject.serialize();//序列化得到字符串
        System.out.println(jwtStr);

    }
}
